2018 湘潭邀请赛 题解 A C F G K .其它题解,后续添加
A 题
没啥好讲的,签到题 从后面往前面数,大于个数的时候直接输出就行了。
AC代码:
1 | #include<iostream> |
C题
题目的意思就是找一个区间比 一个数大的数的个数要不小于这个数。求这个数最大是多少。
这一题就是一个区域树(大佬们告诉我也叫主席树,然而我这个菜鸡不知道啥是主席树),一般线段树维护的是一个值。这题每个节点维护的是一个数组,这个题没有修改只有查询。
每次查询在包含这个区间就二分查找大于这个数的个数,
如果 不包含返回零。
如果有一部分在这个区间就继续往下找,然后返回两个儿子的个数和。
复杂度是(nlogn+m log^3 n);
AC代码:
1 | #include<iostream> |
F题
一个sort 就过了没啥难的,就是注意值爆了double 要用long double。
AC代码:
1 | #include<iostream> |
G题
找规律,这个变化可以保证 两个a,b一定可以消去,a,b,的位置可以交换,所以题目就变成了找两个字符串对应的,c ,左右两边的a,b奇偶是不是一样的。
如果c个数不相等直接输出no;
相等 判断 ,以c为分隔符的区间 a,b,的奇偶相不相等。
AC代码:
1 | #include<iostream> |
K题
就是一个找因子的题 2018 因子 1 ,2018 ,2 ,1009;
所以
所有的 奇数可以和所有的 2018的倍数匹配。
2018 可以和所有的数匹配,
偶数 可以和所有 1009 的倍数匹配
1009 可以和所有 偶数匹配;
注意一下,其中重复算的就行。
AC代码:
1 | #include<iostream> |